#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "tabSymboles.h"

symtable* creerSymtable()
{
	symtable* s = NULL;
	s = (symtable*)malloc(sizeof(symtable));
	s->tete = NULL;
    s->cptReg = -1;
	return s;

}

symtable* supprimerSymtable(symtable* s)
{
	s = NULL;
	return s;
}

symtable* ajouterEntree(entree* nouvelle, symtable* s) 
{
	entree* tmp = s->tete;
	s->tete = nouvelle;
	s->tete->suivantTS = tmp;
	return s;
}


symtable* supprimerEntreeSymb(char* oldId, symtable* s) 
{	
	entree* current = s->tete;
	entree* prec = NULL;
	int trouve = 0;
	int cpt = 0;

	while(!trouve)
	{
		if (strcmp(current->lexeme, oldId) == 0)
		{			
			if (cpt == 0)							// supprimer en tête
				s->tete = current->suivantTS;										
			else if (current->suivantTS == NULL) 	// supprimer en fin de liste
				prec->suivantTS = NULL;
			else 									// supprimer au milieu			
				prec->suivantTS = current->suivantTS;

			free(current->lexeme);
			current->lexeme = NULL;
			current->definitioncourante = supprimerPileDef(current->definitioncourante);
			free(current);
			current = NULL;
			trouve = 1;
		} 
		else
		{
			prec = current;
			current = current->suivantTS;
			cpt++;
		}
	}
	return s;
}



